import Vue from 'vue'
import Vuex from 'vuex'

Vue.use(Vuex)

export default new Vuex.Store({
    state: {
        num: 10,
        title: '这是标题'
    },
    getters: {
        dbNum(state) {
            return state.num * 2
        }
    },
    mutations: { //存放修改数据方法
        // mutations方法，第一个参数默认为state，第二个参数为方法传递的参数，没有第三个参数，如果要在方法中传递多个参数，将多个参数封装为对象，将对象作为第二个参数传递进去
        addNum(state, payload) {
            state.num += payload
        }
    },
    actions: { //保存异步修改数据的方法   常见异步操作 : promise ajax 定时器
        // actions方法，第一个参数默认为 context表示上下文，第二个参数为方法传递的参数，同样没有第三个参数，如果要在方法中传递多个参数，将多个参数封装为对象，将对象作为第二个参数传递进去

        //  异步修改 
        asyncAddNum(context,payload){
            setTimeout(()=>{
                context.commit('addNum',payload)
            },1000)
        }
    },
    modules: {

    }
})